SPSS – 使用值标签重新编码工具

本文介绍了一个简单的工具,可以将值及其值标签重新编码为不同的值。

  • 前提条件和下载
  • 检查结果和创建新变量
  • 示例 I - 反向编码变量
  • 示例 II - 在 AUTORECODE 后更正顺序
  • 示例 III - 将 1-2 转换为 0-1 编码
  • 示例 IV - 使用原生语法更正编码错误

示例数据

我们将使用 recode-with-value-labels.sav(部分如下所示)用于所有示例。

SPSS 带有值标签重新编码的变量视图

这些数据包含几个常见问题:

某些变量必须进行反向编码,因为它们测量的是某个量表中其他变量的相反方向。 某些有序变量被编码为 字符串变量 (string variables)

本文介绍的工具是解决这些和其他几个常见问题的最快选择。

前提条件和安装

我们的重新编码工具需要 SPSS 24+ 版本,并正确安装 SPSS Python 3 essentials。通常情况下,较新的 SPSS 版本都已安装。

接下来,从 SPSS_TUTORIALS_RECODE_WITH_VALUE_LABELS.spe 下载我们的工具。您可以将其拖放到数据编辑器窗口中进行安装。或者,导航到 “E_x_tensions”(扩展) SPSS 菜单箭头I nstall local extension bundle”(安装本地扩展包),如下所示。

SPSS 扩展 安装本地扩展包

在打开的对话框中,导航到下载的 .spe 文件并选择它。SPSS 现在会弹出一个消息,提示“该扩展已成功安装在 T ransform (转换) - SPSS tutorials - Recode with Value Labels(使用值标签重新编码) 下”。您现在可以在 T ransform (转换) SPSS 菜单箭头 SPSS tutorials - Recode with Value Labels(使用值标签重新编码) 下找到我们的工具,如下所示。

SPSS 使用值标签重新编码工具菜单

检查结果和创建新变量

如果您使用我们的工具,您可能需要验证所有结果是否正确。一种基本方法是在重新编码变量之前和之后比较一些频数分布。如果您的输出中只显示值标签,它们将是相同的(除了它们的顺序)。

我们的工具修改现有变量,而不是创建新变量。如果您不喜欢这样,可以将它与我们的 SPSS 克隆变量工具(如下所示)结合使用。

SPSS 克隆变量对话框 1

一个非常可靠的策略是:

  • 克隆所有您想要重新编码的变量;
  • 使用我们的重新编码工具重新编码原始变量(而不是克隆的变量);
  • 使用交叉表(CROSSTABS)比较重新编码的变量与其克隆的副本;
  • 可选:完成后从您的数据中删除克隆的变量。

好了,现在让我们看看我们的重新编码工具如何解决一些常见的数据问题。

示例 I - 反向编码变量

Conf01 到 Conf06 旨在衡量自信程度。但是,Conf04 和 Conf06 表明 缺乏 自信,并且与其他自信项目呈 负相关

这个问题可以通过反向编码这些项目来解决。安装我们的工具后,让我们首先导航到 T ransform (转换) SPSS 菜单箭头 SPSS tutorials - Recode with Value Labels(使用值标签重新编码)。接下来,我们将填写如下所示的对话框。

SPSS 使用值标签重新编码示例 1

排除 8 (No answer) 的 用户缺失值 (user missing value) 会使该值及其值标签保持不变。

完成这些步骤会生成以下语法。让我们运行它。

***REVERSE CODE CONF04 AND CONF06.
**
SPSS TUTORIALS RECODE_WITH_VALUE_LABELS VARIABLES=Conf04 Conf06 OLDVALUES=1 2 3 4 5 6 7 NEWVALUES=7 6 5 4 3 2 1
/OPTIONS LABELSUFFIX=" (R)" ACTION=RUN.

结果

SPSS 使用值标签重新编码结果 1

请注意,(R) 已附加到我们的反向编码变量的变量标签; 值和值标签也已反转。

现在,我们的反向编码项目与其他所有自信项目呈正相关,这是计算 Cronbach’s alpha 或该量表的平均值或总分所必需的。

示例 II - 在 AUTORECODE 后更正顺序

另一个常见问题是 SPSS 中的有序字符串变量,例如 suc01 到 suc06,它们衡量的是自我感知的成功程度。首先,让我们通过导航到 T ransform (转换) SPSS 菜单箭头 A utomatic Recode (自动重新编码) 将它们转换为带标签的数值变量。接下来,我们将为单个变量创建一个 AUTORECODE 命令,如下所示。

SPSS 自动重新编码示例

现在,我们可以轻松地将剩余的 5 个变量添加到生成的 SPSS 语法 中,如下所示。让我们运行它。

***CONVERT STRING VARIABLES INTO NUMERIC ONES.
**
AUTORECODE VARIABLES=suc01 to suc06  /* ADD ALL OLD VARIABLES HERE */
/INTO nsuc01 to nsuc06  /* ADD ALL NEW VARIABLES HERE */
/GROUP
/PRINT.

此语法将我们的字符串变量转换为数值变量,但答案类别的顺序与所需顺序不符。为了纠正这一点,我们首先将新的数值值复制粘贴到 Notepad++ 或 Excel 中。这使得将它们移动到所需的顺序变得容易,如下所示。

SPSS 使用值标签重新编码所需顺序

这样做清楚地表明我们需要:

  • 将 9 转换为 1,
  • 将 3 转换为 2,
  • 将 7 转换为 3,
  • 等等…

下图显示了如何使用我们的重新编码工具来做到这一点。

SPSS 使用值标签重新编码示例 2

这将生成以下语法,该语法为我们的自动重新编码数值变量设置正确的顺序。

***FIX CATEGORY ORDER AFTER AUTORECODE.
**
SPSS TUTORIALS RECODE_WITH_VALUE_LABELS VARIABLES=nsuc01 nsuc02 nsuc03 nsuc04 nsuc05 nsuc06
OLDVALUES=9 3 7 4 6 2 8 5 1 NEWVALUES=1 2 3 4 5 6 7 8 9
/OPTIONS ACTION=RUN.

示例 III - 将 1-2 转换为 0-1 编码

在 SPSS 中,我们最好对二分变量使用 0-1 编码。一些原因是:

  • 这有助于解释多元回归中 虚拟变量 (dummy variables) 的 b 系数;
  • 0-1 编码变量的平均值对应于“是”答案的比例,这很容易解释。

以下语法可以使用我们的重新编码工具轻松创建,并将数据文件中所有 二分变量 (dichotomous variables) 的 1-2 编码转换为 0-1 编码。

***CHANGE 1-2 CODING TO 0-1 CODING FOR SEVERAL VARIABLES.
**
SPSS TUTORIALS RECODE_WITH_VALUE_LABELS VARIABLES=somed01 somed02 somed03 somed04 somed05 somed06 somed07 OLDVALUES=2 NEWVALUES=0
/OPTIONS ACTION=RUN.

示例 IV - 使用原生语法更正编码错误

如果我们仔细观察我们的最终变量 sat01,我们会看到它被编码为 21 到 27。根据我们如何分析它,我们可能想要将其转换为标准的 7 点李克特量表。下面的屏幕截图显示了它是如何完成的。

SPSS 使用值标签重新编码示例 3

请注意,我们选择“Create syntax and print it”(创建语法并打印它)以创建原生语法。

结果

如下所示,选择打印选项会在您的输出窗口中生成原生 SPSS 语法。

SPSS 重新编码工具原生语法

我们因此从输出窗口复制粘贴的语法是:

***CORRECT CODING WITH NATIVE SYNTAX.
**
RECODE sat01 (21.0 = 1.0)(22.0 = 2.0)(23.0 = 3.0)(24.0 = 4.0)(25.0 = 5.0)(26.0 = 6.0)(27.0 = 7.0).
EXECUTE.
VALUE LABELS
/sat01 1.0 'Strongly disagree' 2.0 'Disagree' 3.0 'Slightly disagree' 4.0 'Neutral' 5.0 'Slightly agree' 6.0 'Agree' 7.0 'Strongly agree'.

请注意,它由 3 个非常基本的命令组成:

  • RECODE 调整值本身;
  • EXECUTE 通常可以从语法中删除,但它确保我们的 RECODE 立即执行;
  • VALUE LABELS 在我们的 RECODE 之后调整我们的值标签。

那么为什么要考虑使用打印选项呢?嗯,我们的工具创建的默认语法只能在安装了该工具的 SPSS 安装上运行。因此,如果客户或同事需要复制您的工作,使用原生语法可确保一切都可以在 任何 SPSS 安装上运行。